﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations.Schema;
using PmSadis.Models.Abstract;

namespace PmSadis.Models
{
    /// <summary>
    /// Элемент на объекте содержания
    /// </summary>
    [Table("D_OBJECT_ELEMENT")]
    public class ObjectElement : IRedactModel
    {
        /// <summary>
        /// Идентификатор
        /// </summary>
        [Column("OBJECT_ELEMENT_ID")]
        public int ObjectElementId { get; set; }

        /// <summary>
        /// Начало, км
        /// </summary>
        [Column("BEGKM")]
        public double? BegKm { get; set; }

        /// <summary>
        /// Конец, км
        /// </summary>
        [Column("ENDKM")]
        public double? EndKm { get; set; }

        /// <summary>
        /// Расположение
        /// </summary>
        [Column("LOCATION")]
        public string Location { get; set; }

        /// <summary>
        /// Объем работ на элементе
        /// </summary>
        [Column("VALUE")]
        public double? Value { get; set; }

        /// <summary>
        /// Идентификатор объекта
        /// </summary>
        [Column("OBJECT_ID")]
        public int ObjectId { get; set; }
        public virtual ContractObject Object { get; set; }

        /// <summary>
        /// Идентификатор елемента
        /// </summary>
        [Column("ELEMENT_ID")]
        public int ElementId { get; set; }
        public virtual Element Element { get; set; }

        /// <summary>
        /// Дата создания
        /// </summary>
        [Column("DATE_CREATE")]
        public DateTime DateCreate { get; set; }

        /// <summary>
        /// Дата редактирования
        /// </summary>
        [Column("DATE_UPDATE")]
        public DateTime DateUpdate { get; set; }

        [NotMapped]
        public string Name
        {
            get
            {
                return this.Element.Name;
            }
        }

        [NotMapped]
        public int? UnitId
        {
            get
            {
                return this.Element.UnitId;
            }
        }
    }
}
